﻿using ContactSMS.Commons.QueryParameters;
using ContactSMS.Domain.Entity;
using ContactSMS.Domain.PagedResult;

namespace ContactSMS.Domain
{
    public interface IPhoneRecordRepository
    {
        Task<PagedPhoneRecordsResult> GetPhoneRecordsAsync(PhoneRecordQueryParameters parameters, int page = 1, int pageSize = 10);
        Task<PhoneRecord?> AddPhoneRecordAsync(PhoneRecord phoneRecord);
        Task<PhoneRecord?> UpdatePhoneRecordAsync(long id, PhoneRecord phoneRecord);
        Task<PhoneRecord?> DeletePhoneRecordByIdAsync(long id);
        Task<bool> DeletePhoneRecordByIdsAsync(long[] ids);
        Task<bool> DeletePhoneRecordByMobileAsync(string mobile);
        Task<PhoneRecord?> GetPhoneRecordByIdAsync(long id);
        Task<(PhoneRecord record, List<PhoneRecord> otherRecords)> GetPhoneRecordsByIdAsync(long id);
        Task<List<PhoneRecord>> SynchAsync(List<PhoneRecord> phoneRecords);
    }
}
